  local cabeca[6], estrutura[6], mascara[6]
  limpa(4,0,24,80,cor,.f.)
  limpa(3,0,23,79,cor,.t.)
  sele estoque 
  go top
  afill(mascara,'@X')
  cabeca[1]  = 'DATA'       ; estrutura[1] = fiel(1)
  cabeca[2]  = 'PRODUTO'    ; estrutura[2] = fiel(2)
  cabeca[3]  = 'DOCUMENTO'  ; estrutura[3] = fiel(3)
  cabeca[4]  = 'MOVIMENTO'  ; estrutura[4] = fiel(4) ; mascara[4] = '9999999999'
  cabeca[5]  = 'VALOR'      ; estrutura[5] = fiel(5) ; mascara[4] = '9999999999'
  cabeca[6]  = 'FUNCIONARIO'; estrutura[6] = fiel(6) ; mascara[5] = '99999'
  menu(24,0,' Movimento ',2,1)
  menu(24,11,'Relatorio ',1,1)
  menu(24,21,'Requisicao ',1,1)
  menu(24,73,'Esc-Sai ',1,3)
  dbedit(4,1,22,78,estrutura,'est100',mascara,cabeca,.T.)
retu



function est100(modo,coluna)
set cursor on

if modo = 0 .or. modo = 3
   retu(1)
endif
tecla = lastkey()
do case
   case tecla = 5 .and. modo = 1

    mensa(10,' Inicio do arquivo ',2)
    retu(2)

   case tecla = 24 .and. modo = 2

    mensa(10,'Final do arquivo',2)
    retu(2)

   case tecla = 27

    retu(0)

  case tecla = 77 .or. tecla = 109      
                  
     sele estoque
     go top
     mdata = ctod('')
     while .t.
      legal(6,4,22,77,'Movimentacao do Estoque','Esc-Sai')
      @ 8,6 say 'Data        :' get mdata
      read
      if empty(mdata) .or. lastkey() = 27
         exit
      endif
      mproduto   = space(10)     
      mdocumento = space(50)
      mmovimento := mvalor := 0
      mfunciona := space(5)
      @ 9,6 say 'Produto     :' get mproduto pict '@R 999.999.9999'
      read
      sele produtos
      if empty(mproduto)
         tela = savescreen(0,0,24,80)
         do produtos with 1
         mproduto = codigo  
         mnome    = produto    
         restscreen(0,0,24,80,tela)
      else  
         seek mproduto
         if eof()
            mensa(10,'Produto nao cadastrado',2)
            loop
         endif
      endif
      @ 9,6  say 'Produto     : ' + trans(mproduto,'@R 999.999.9999') + ' ' + mnome
      @ 10,6 say 'Documento   :' get mdocumento  pict '@!'
      @ 12,6 say 'Movimento   :' get mmovimento  pict '999999'     valid mmovimento # 0
      @ 13,6 say 'Valor       :' get mvalor      pict '999,999.99' valid mvalor > 0
      read
      mvalor = if(mmovimento>0,mvalor,mvalor*-1)
      mtotal = mmovimento * mvalor
      @ 15,6 say 'Total       :' + trans(mtotal,'999,999.99')
      if mmovimento < 0
         @ 14,6 say 'Funcionario :' get mfunciona   pict '999999'
         read
         sele funciona
         if empty(mfunciona)
            tela = savescreen(0,0,24,80)
            do funciona with 1
            mfunciona = matricula 
            mnome     = nome       
            restscreen(0,0,24,80,tela)
         else  
            seek mfunciona
            if eof()
               mensa(10,'Funcionario nao cadastrado',2)
            endif
         endif
         @ 14,6 say 'Funcionario : ' + mfunciona + ' ' + mnome  
      endif
      sele estoque
      if confirma(18,60,' 1 - Confirma ',' 2 - Cancela  ')
         appe blank
         if inclusao()
            grava()
            unlock
         endif
      endif
      sele produtos
      if alteracao()
         repla estoque with estoque + mmovimento
         if mvalor > 0
            repla compra  with mdata  
            repla valor   with mvalor 
         endif
         unlock
      endif
      sele estoque
    enddo
   sele estoque
   retu(2)
 
   case tecla = 82 .or. tecla = 114
                  
    legal(6,4,22,77,'Razonete de Produto')
    mproduto = space(10)
    @ 10,10 say 'Produto  :' get mproduto pict '@R 999.999.9999'
    read
    if empty(mproduto)
       retu(2)
    endif
    sele produtos
    seek mproduto
    if eof()
       mensa(10,'Produto nao cadastrado',2)
       retu(2)
    endif
    mnome = nome
    mtitulo = .t.
    mpagina = 1
    msaldo  = 0
    sele estoque
    go top
    while .not. eof()
     set devi to screen
     @ 11,10 say 'Data     : ' + dtoc(data)
     @ 12,10 say 'Registro : ' + trans(recno(),'99999999')
     set devi to printer
     if mproduto # produto
        skip
        loop
     endif
     if mtitulo
        tit_rela('Razao : ' + mnome,mpagina)
        @ prow(),2   say ' DATA       DOCUMENTO       ENTRADA SAIDA   SALDO   FABRICA'
        @ prow()+1,2 say ''
        mtitulo = .f.
     endif
     msaldo+=movimento
     sele estoque
     @ prow()+1,0 say data
     @ prow(),12  say documento
     @ prow(),if(movimento>0,26,32) say movimento pict '9999999999'
     @ prow(),40  say msaldo
     skip
     if prow() > 56
        eject
        mtitulo = .t.
        mpagina+=1
     endif
    enddo
    eject
    set devi to screen
    retu(2)

   case tecla = 81 .or. tecla = 113
                    
    if .not. impressora()
        retu(2)
    endif

    legal(6,4,22,77,'Declaracao')

    mdata   := ctod('')
    mitem   = 1
    mtitulo = .t.
    msituacao = ' '
    mfunciona = space(5)  
    mobs1 := mobs2 := space(50)
    @ 10,10 say 'Data        :' get mdata
    @ 11,10 say 'Situacao    :' get msituacao   pict '!' valid msituacao $ 'ARC'
    @ 12,10 say 'Funcionario :' get mfunciona   pict '99999'
    @ 13,10 say 'Observacao  :' get mobs1       pict '@!'   
    @ 14,10 say '             ' get mobs2       pict '@!'   
    read
    if empty(mdata)   
       retu(2)
    endif
    if msituacao = 'A'
       msituacao = 'ADMISSAO' 
    elseif msituacao = 'R'
       msituacao = 'RENOVACAO'
    else
       msituacao = 'COMPLEMENTO'
    endif
    sele estoque
    go top
    set devi to printer
    @ prow()+5,2 say padc('DECLARACAO',78)
    @ prow()+5,2 say '      Ter recebido o material abaixo discriminado  dentro do prazo e das'
    @ prow()+1,2 say 'condicoes estabelecidas na C.C.T. (Convencao Coletiva do Trabalho).'
    @ prow()+2,2 say '      Ter  ciencia  de  minha  responsabilidade  no  uso, na  guarda   e'
    @ prow()+1,2 say 'conservacao do material e da utilizacao apenas em local de servico. Caso'
    @ prow()+1,2 say 'perca ou danifique terei que arcar  com  as despesas  para reposicao  do'
    @ prow()+1,2 say 'mesmo.'
    @ prow()+2,2 say '      Ter sido  esclarecido  quanto  a  importancia  de  apresentacao em'
    @ prow()+1,2 say 'servico  com  esmero (barbeado, sapatos  engraxados, penteado  e  demais'
    @ prow()+1,2 say 'cuidados de higiene).'
    while .not. eof()
     if mfunciona # funciona .or. mdata # data
        skip
        loop
     endif
     if mtitulo
        @ prow()+4,2 say '+------+--------------------------------------------+------------------+'
        @ prow()+1,2 say '| ITEM | DESCRICAO                                  |     QUANTIDADE   |'
        @ prow()+1,2 say '+------+--------------------------------------------+------------------+'
        mtitulo = .f.
     endif
     mproduto = produto
     sele produtos
     seek mproduto
     if eof()
        mensa(10,'Produto nao cadastrado',2)
        retu(2)
     endif
     mnome = produto
     sele estoque
     @ prow()+1,2 say '|      |                                            |                  |'
     @ prow(),4   say mitem pict '9999'
     @ prow(),10  say mnome    
     @ prow(),60  say movimento
     skip
     mitem+=1
     if prow() > 56
        eject
        mtitulo = .t.
     endif
    enddo
    @ prow()+1,2 say '+------+--------------------------------------------+------------------+'
    @ prow()+4,2 say 'Obs : ' + mobs1
    @ prow()+1,2 say '      ' + mobs2
    @ prow()+4,2 say 'Situacao : ' + msituacao
    @ prow()+4,2 say '              _______________________________________ Data : ___/___/_____'
    @ prow()+1,2 say 'Funcionario  : ' + mnome    
    @ prow()+4,2 say 'Entregue por : ______________________________________ Data : ___/___/_____'
    eject
    set devi to screen
    retu(2)

  otherwise

    retu(1)

endcase
              

